package com.cw.jeeyt.dao.impl.system;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.cw.jeeyt.dao.intf.system.SysScaffoldModuleFileDao;
import com.cw.jeeyt.dao.mapper.system.SysScaffoldModuleFileMapper;
import com.cw.jeeyt.dao.model.system.SysScaffoldModuleFileDo;
import com.cw.jeeyt.dao.model.system.SysScaffoldModuleFileExample;
import com.cw.jeeyt.dao.model.system.SysScaffoldModuleFileKeyDo;
import com.cw.jeeyt.dao.query.system.SysScaffoldModuleFileQuery;
import com.cw.lang.common.utils.StringUtil;
import com.cw.lang.common.dao.AbstractBaseDaoImpl;
import com.cw.lang.common.pagehelper.PageHelper;
import com.cw.lang.mybatis.dto.PageInfo;
import com.cw.lang.mybatis.dto.PageParam;

/**
 * 脚手架模块文件数据库操作接口实现
 *
 * @author admin
 * @date 2020-05-26 15:00:07
 */
@Repository
public class SysScaffoldModuleFileDaoImpl
    extends AbstractBaseDaoImpl<SysScaffoldModuleFileDo, SysScaffoldModuleFileMapper>
    implements SysScaffoldModuleFileDao {
    /**
     * 分页查询
     *
     * @param sysScaffoldModuleFile 条件
     * @param pageParam 分页参数
     * @return
     */
    @Override
    public PageInfo<SysScaffoldModuleFileDo> selectPage(SysScaffoldModuleFileQuery sysScaffoldModuleFile,
        PageParam pageParam) {
        SysScaffoldModuleFileExample example = buildExample(sysScaffoldModuleFile);
        return PageHelper.<SysScaffoldModuleFileDo>startPage(pageParam.getPageNum(),
            pageParam.getPageSize()).doSelectPageInfo(() -> getMapper().selectByExample(example));
    }

    /**
     * 根据key查询脚手架模块文件
     *
     * @param id
     * @return
     */
    @Override
    public SysScaffoldModuleFileDo selectByKey(Long id) {
        SysScaffoldModuleFileKeyDo sysScaffoldModuleFileKeyDo = new SysScaffoldModuleFileKeyDo();
        sysScaffoldModuleFileKeyDo.setId(id);
        return getMapper().selectByPrimaryKey(sysScaffoldModuleFileKeyDo);
    }

    /**
     * 根据key删除脚手架模块文件
     *
     * @param id
     * @return
     */
    @Override
    public int deleteByKey(Long id) {
        SysScaffoldModuleFileKeyDo sysScaffoldModuleFileKeyDo = new SysScaffoldModuleFileKeyDo();
        sysScaffoldModuleFileKeyDo.setId(id);
        return getMapper().deleteByPrimaryKey(sysScaffoldModuleFileKeyDo);
    }

    /**
     * 查询脚手架模块文件信息
     *
     * @param sysScaffoldModuleFile 条件
     * @return List<SysScaffoldModuleFileDo>
     */
    @Override
    public List<SysScaffoldModuleFileDo> selectByExample(SysScaffoldModuleFileQuery sysScaffoldModuleFile) {
        return getMapper().selectByExample(buildExample(sysScaffoldModuleFile));
    }

    /**
     * 新增脚手架模块文件信息
     *
     * @param sysScaffoldModuleFile 条件
     * @return int>
     */
    @Override
    public int insertBySelective(SysScaffoldModuleFileDo sysScaffoldModuleFile) {
        if (sysScaffoldModuleFile == null) {
            return -1;
        }
        return getMapper().insertSelective(sysScaffoldModuleFile);
    }

    /**
     * 修改脚手架模块文件信息
     *
     * @param sysScaffoldModuleFile
     * @return
     */
    @Override
    public int updateBySelective(SysScaffoldModuleFileDo sysScaffoldModuleFile) {
        if (sysScaffoldModuleFile == null) {
            return -1;
        }
        return getMapper().updateByPrimaryKeySelective(sysScaffoldModuleFile);
    }

    /**
     * 构建脚手架模块文件Example信息
     *
     * @param sysScaffoldModuleFile
     * @return
     */
    public SysScaffoldModuleFileExample buildExample(SysScaffoldModuleFileQuery sysScaffoldModuleFile) {
        SysScaffoldModuleFileExample example = new SysScaffoldModuleFileExample();
        SysScaffoldModuleFileExample.Criteria criteria = example.createCriteria();
        if (sysScaffoldModuleFile != null) {
            //添加查询条件
            if (null != sysScaffoldModuleFile.getId()) {
                criteria.andIdEqualTo(sysScaffoldModuleFile.getId());
            }
            if (null != sysScaffoldModuleFile.getModuleId()) {
                criteria.andModuleIdEqualTo(sysScaffoldModuleFile.getModuleId());
            }
            if (StringUtil.isNotEmpty(sysScaffoldModuleFile.getFileCode())) {
                criteria.andFileCodeEqualTo(sysScaffoldModuleFile.getFileCode());
            }
            if (StringUtil.isNotEmpty(sysScaffoldModuleFile.getFileName())) {
                criteria.andFileNameEqualTo(sysScaffoldModuleFile.getFileName());
            }
            if (StringUtil.isNotEmpty(sysScaffoldModuleFile.getFilePath())) {
                criteria.andFilePathEqualTo(sysScaffoldModuleFile.getFilePath());
            }
            if (StringUtil.isNotEmpty(sysScaffoldModuleFile.getFileType())) {
                criteria.andFileTypeEqualTo(sysScaffoldModuleFile.getFileType());
            }
            if (StringUtil.isNotEmpty(sysScaffoldModuleFile.getFileContent())) {
                criteria.andFileContentEqualTo(sysScaffoldModuleFile.getFileContent());
            }
            if (StringUtil.isNotEmpty(sysScaffoldModuleFile.getFileComment())) {
                criteria.andFileCommentEqualTo(sysScaffoldModuleFile.getFileComment());
            }
        }
        return example;
    }
}
